package studio7Omega.servlet;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import studio7Omega.excepcion.DAOExcepcion;
import studio7Omega.modelo.DetalleAlquiler;
import studio7Omega.modelo.Item;
import studio7Omega.modelo.Sala;
import studio7Omega.modelo.Usuario;
import studio7Omega.negocio.SistemaNegocio;

/**
 * Servlet implementation class DatosReservaServlet
 */
@WebServlet("/DatosReservaServlet")
public class DatosReservaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DatosReservaServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.processRequest(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.processRequest(request, response);
	}
	protected void processRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		SimpleDateFormat formatoDelTexto = new SimpleDateFormat("yyyy-MM-dd");
		SistemaNegocio neg = new SistemaNegocio();
		HttpSession session = request.getSession();
		//Descomentar la linea de abajo cuando alex corrija login
		Usuario usu=(Usuario)session.getAttribute("USUARIO"); 
		//Usuario usu = new Usuario();
		//usu.setIdUsuario(5);
		//usu.setNombre("Juan Carlos");
		
		Sala sala = new Sala();
		int x=Integer.parseInt(request.getParameter("txtSala"));
		String fecIni=request.getParameter("txtHoraIni"); 
		String fecFin=request.getParameter("txtHoraFin"); 
		sala.setIdSala(x);
		int indAlquiler=0;
		Date fechareserva=null;
		
		try{
			fechareserva = formatoDelTexto.parse(request.getParameter("txtFecha"));
			indAlquiler= neg.realizarReserva(fechareserva,fecIni,fecFin,usu,sala);
			
			if (indAlquiler!=0){
				Collection<DetalleAlquiler> detAlq = neg.obtenerDetalleAlquiler(indAlquiler);
				Collection<Item> servicios = neg.obtenerServicios(indAlquiler);
				Collection<Item> instrumentosDis = neg.obtenerInstrumentosDis();
				//request.setAttribute("NroAlquiler", indrequest.setAttribute("DetalleAlquiler", detAlq);Alquiler);
				request.setAttribute("NroAlquiler", indAlquiler);
				request.setAttribute("DetalleAlquiler", detAlq);
				request.setAttribute("ListaServicios", servicios);
				request.setAttribute("ListaInstrumentosDis", instrumentosDis);
				Double costo=neg.calcularCostoReserva(indAlquiler);
				request.setAttribute("CostoTotal", costo);
				//String mensaje="Reserva realizada satisfactoriamente";
				//request.setAttribute("Mensaje", mensaje);
				RequestDispatcher rd = request.getRequestDispatcher("reserva.jsp");
				rd.forward(request, response);
				
			}else{
				String mensaje="La Sala no se encuentra disponible para la fecha y hora indicada";
				request.setAttribute("Mensaje", mensaje);
				RequestDispatcher rd = request.getRequestDispatcher("MensajeReserva.jsp");
				rd.forward(request, response);
			}
		} catch (DAOExcepcion e) {
			System.out.println(e.getMessage());
			RequestDispatcher rd = request.getRequestDispatcher("error.jsp");
			rd.forward(request, response);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}
